Networks based on the transmission control protocol (TCP) enjoy widespread use. The reliability of the transmission control protocol makes it useful in numerous applications requiring precise multi-point communications. It is used for providing a common mode of communications for large and small computer systems in local area networks and wide area networks using a variety of communications and network communications facilities to provide a variety of services, notably, the internet, among others.
The transmission control protocol is a mature packet-based protocol for providing reliable process-to-process communications between networked computer systems. According to the protocol, each packet of a communication is started by the transmission of a packet containing a synchronization flag from a sending end to a receiving end. Reliability is achieved by assigning a sequence number to the packets and requiring an acknowledgment (ACK) to the packet received from the receiving end transmission control protocol device. The acknowledgment is transmitted to the original sending end, in response to the original transmission, then an acknowledgment to the original receiving end's acknowledgment is transmitted back to the receiving end to complete the cycle. Acknowledgments are used for the initial synchronization packet as well as for later packets requesting data transfer, the actual data transfer, and the ending signal.
At each end of the communication, the so-called “state” (the state of whether an acknowledgment has been received or not) is recorded and timed. If an acknowledgment is not received by the sending transmission control protocol device within a pre-set time-frame, the packet related to the absent acknowledgment is re-transmitted. Sequence numbers are used to re-order segments received out-of-order. In particular, timing and monitoring of acknowledgment reception at each end of the communication is a resource intensive computing function.
A typical transmission control protocol server design involves the use of multiple resources including random access memory, data storage, a processor or processors, and software capable of communicating with other transmission control protocol devices and transferring data. In addition to providing the minimal server operational functions, resource availability and capacity also plays an important role in determination of server performance. Consequently, as the number of clients and/or the volume of data provided to clients by a server is increased, server resources require expansion. Should the number of clients served or volume of data transferred become too great, server performance may be degraded, resulting in failed and/or slower connection and transfer speeds. Even in the case of clients requesting the transfer of small files, the sockets, as they are referred to, which provide applications with connections to a network, can overburden available resources. The ability of a server to adapt to increased workload demand resulting from an increase in the number of clients or the size and/or number of client requests is often referred to scalability.